用户对问题“VGG

您所在的位置:网站首页 tensorflow vgg 用户对问题“VGG

用户对问题“VGG

#用户对问题“VGG| 来源: 网络整理| 查看: 265

我正在尝试在CIFAR-10数据集上实现VGG-19 CNN,其中图像的维度为(32,32,3)。训练集有50000个图像,而测试集有10000个图像。我使用的是Python3.7和TensorFlow 2.0。我已经通过归一化数据集对其进行了预处理-

# Normalize the training and testing datasets- X_train /= 255.0 X_test /= 255.0

然后我设计了一个CNN-

def vgg_19(): """ Function to define the architecture of a convolutional neural network model following VGG-19 architecture for CIFAR-10 dataset. Vgg-19 architecture- 64, 64, pool -- convolutional layers 128, 128, pool -- convolutional layers 256, 256, 256, 256, max-pool -- convolutional layers 512, 512, 512, 512, max-pool -- convolutional layers 512, 512, 512, 512, avg-pool -- convolutional layers 256, 256, 10 -- fully connected layers Output: Returns designed and compiled convolutional neural network model """ l = tf.keras.layers model = Sequential() model.add( Conv2D( filters = 64, kernel_size = (3, 3), activation='relu', kernel_initializer = tf.initializers.GlorotUniform(), strides = (1, 1), padding = 'same', input_shape=(32, 32, 3) ) ) model.add( Conv2D( filters = 64, kernel_size = (3, 3), activation='relu', kernel_initializer = tf.initializers.GlorotUniform(), strides = (1, 1), padding = 'same' ) ) model.add( MaxPooling2D( pool_size = (2, 2), strides = (2, 2) ) ) model.add( Conv2D( filters = 128, kernel_size = (3, 3), activation='relu', kernel_initializer = tf.initializers.GlorotUniform(), strides = (1, 1), padding = 'same' ) ) model.add( Conv2D( filters = 128, kernel_size = (3, 3), activation='relu', kernel_initializer = tf.initializers.GlorotUniform(), strides = (1, 1), padding = 'same' ) ) model.add( MaxPooling2D( pool_size = (2, 2), strides = (2, 2) ) ) model.add( Conv2D( filters = 256, kernel_size = (3, 3), activation='relu', kernel_initializer = tf.initializers.GlorotUniform(), strides = (1, 1), padding = 'same' ) ) model.add( Conv2D( filters = 256, kernel_size = (3, 3), activation='relu', kernel_initializer = tf.initializers.GlorotUniform(), strides = (1, 1), padding = 'same' ) ) model.add( Conv2D( filters = 256, kernel_size = (3, 3), activation='relu', kernel_initializer = tf.initializers.GlorotUniform(), strides = (1, 1), padding = 'same' ) ) model.add( Conv2D( filters = 256, kernel_size = (3, 3), activation='relu', kernel_initializer = tf.initializers.GlorotUniform(), strides = (1, 1), padding = 'same' ) ) model.add( MaxPooling2D( pool_size = (2, 2), strides = (2, 2) ) ) model.add( Conv2D( filters = 512, kernel_size = (3, 3), activation='relu', kernel_initializer = tf.initializers.GlorotUniform(), strides = (1, 1), padding = 'same' ) ) model.add( Conv2D( filters = 512, kernel_size = (3, 3), activation='relu', kernel_initializer = tf.initializers.GlorotUniform(), strides = (1, 1), padding = 'same' ) ) model.add( Conv2D( filters = 512, kernel_size = (3, 3), activation='relu', kernel_initializer = tf.initializers.GlorotUniform(), strides = (1, 1), padding = 'same' ) ) model.add( Conv2D( filters = 512, kernel_size = (3, 3), activation='relu', kernel_initializer = tf.initializers.GlorotUniform(), strides = (1, 1), padding = 'same' ) ) model.add( MaxPooling2D( pool_size = (2, 2), strides = (2, 2) ) ) model.add( Conv2D( filters = 512, kernel_size = (3, 3), activation='relu', kernel_initializer = tf.initializers.GlorotUniform(), strides = (1, 1), padding = 'same' ) ) model.add( Conv2D( filters = 512, kernel_size = (3, 3), activation='relu', kernel_initializer = tf.initializers.GlorotUniform(), strides = (1, 1), padding = 'same' ) ) model.add( Conv2D( filters = 512, kernel_size = (3, 3), activation='relu', kernel_initializer = tf.initializers.GlorotUniform(), strides = (1, 1), padding = 'same' ) ) model.add( Conv2D( filters = 512, kernel_size = (3, 3), activation='relu', kernel_initializer = tf.initializers.GlorotUniform(), strides = (1, 1), padding = 'same' ) ) model.add( AveragePooling2D( pool_size=(2, 2), strides=(2, 2) ) ) ''' model.add( MaxPooling2D( pool_size = (2, 2), strides = (2, 2) ) ) ''' model.add(Flatten()) model.add( Dense( units = 256, activation='relu' ) ) model.add( Dense( units = 256, activation='relu' ) ) ''' model.add( Dense( units = 1000, activation='relu' ) ) ''' model.add( Dense( units = 10, activation='softmax' ) ) # Compile pruned CNN- model.compile( loss=tf.keras.losses.categorical_crossentropy, # optimizer='adam', optimizer = tf.keras.optimizers.SGD(learning_rate=0.01, momentum=0.9), metrics=['accuracy'] ) return model

但是,当我试着训练它的时候-

history = orig_model.fit( x = X_train, y = y_train, batch_size = batch_size, epochs = num_epochs, verbose = 1, # callbacks = callback, validation_data = (X_test, y_test), shuffle = True )

设计的CNN给出了大约9%的验证准确率。

出什么问题了?



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3